Database Tutorials SQLite এর Flexible Typing (Dynamic Typing) গাইড ও নোট

353

SQLite এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল Flexible Typing বা Dynamic Typing। এটি SQLite এর ডেটাবেসে ডাটা টাইপ ব্যবস্থাপনার পদ্ধতি। সাধারণত, অনেক ডেটাবেস সিস্টেম যেমন MySQL, PostgreSQL ইত্যাদিতে ডেটাবেসে প্রতিটি কলামের জন্য একটি নির্দিষ্ট ডেটা টাইপ নির্ধারণ করা হয় (যেমন INTEGER, TEXT, DATE)। তবে, SQLite এর ক্ষেত্রে এটি কিছুটা আলাদা, কারণ এটি একটি টাইপলেস (type-less) বা ডাইনামিক টাইপিং সিস্টেম ব্যবহার করে, যেখানে ডাটা ইনসার্ট করার সময় কলামের ডেটা টাইপের সঙ্গে সামঞ্জস্য রাখার কোনো বাধ্যবাধকতা নেই।


Flexible Typing এর মূল ধারণা

SQLite Flexible Typing এর মাধ্যমে এটি সম্ভব যে, আপনি যেকোনো কলামে যেকোনো ডেটা টাইপের ডেটা রাখতে পারেন। এতে কলাম বা টেবিলের নির্দিষ্ট ডেটা টাইপের সাথে মিল রেখে ডাটা রাখার কোনো বাধ্যবাধকতা নেই। অর্থাৎ, একটি কলামে আপনি INTEGER টাইপের ডেটা রাখতে পারেন, কিন্তু একই কলামে আপনি TEXT বা REAL টাইপের ডেটাও রাখতে পারবেন।

১. SQLite এর ডেটা টাইপগুলি

SQLite এর ভেতরে পাঁচটি মৌলিক ডেটা টাইপ রয়েছে:

  • NULL: কোনো মান না থাকা।
  • INTEGER: পূর্ণসংখ্যা।
  • REAL: দশমিক সংখ্যা (ফ্লোটিং পয়েন্ট সংখ্যা)।
  • TEXT: পাঠ্য বা স্ট্রিং ডেটা।
  • BLOB: বাইনারি ডেটা (যেমন: ছবি, ফাইল ইত্যাদি)।

SQLite এর মধ্যে টাইপের নির্দিষ্টতা খুবই নমনীয়, এবং এগুলি শুধু শর্তসাপেক্ষ ব্যবহৃত হয়। এটি Type Affinity নামে পরিচিত।

২. Type Affinity

SQLite এ Type Affinity হল এমন একটি ব্যবস্থা যা টেবিলের কলামের জন্য একটি প্রাথমিক ডেটা টাইপ নির্দেশ করে, তবে এটি ডেটা সন্নিবেশ (insertion) এবং নির্বাচনে টাইপ যাচাই করে না। উদাহরণস্বরূপ, আপনি যদি একটি কলামকে TEXT টাইপ হিসেবে ঘোষণা করেন, তবে আপনি সেখানে INTEGER বা REAL টাইপের ডেটাও সন্নিবেশ করতে পারবেন।

এখানে কিছু উদাহরণ দেওয়া হলো:

CREATE TABLE users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    age INTEGER
);

উপরে দেওয়া টেবিলের মধ্যে name কলামটি TEXT টাইপের জন্য ঘোষণা করা হয়েছে, কিন্তু আপনি সেখানে সংখ্যা (INTEGER) বা ফ্লোট (REAL) ডেটাও ইনসার্ট করতে পারবেন, যা SQLite এর Flexible Typing বা Dynamic Typing বৈশিষ্ট্যের প্রমাণ।


৩. Flexible Typing এর উদাহরণ

ধরা যাক, আপনি একটি টেবিল তৈরি করেছেন যেখানে একটি কলামকে INTEGER টাইপ হিসেবে ঘোষণা করা হয়েছে, কিন্তু সেখানে আপনি ভিন্ন ধরনের ডেটা (যেমন টেক্সট বা ফ্লোট) সন্নিবেশ করতে চান:

CREATE TABLE products (
    product_id INTEGER PRIMARY KEY,
    product_name TEXT,
    price INTEGER
);

এখন, এই টেবিলের price কলামে আপনি INTEGER টাইপের ডেটা রাখবেন বলে মনে করা হলেও, আপনি সেখানে REAL বা TEXT টাইপের ডেটাও রাখতে পারবেন:

INSERT INTO products (product_name, price) VALUES ('Laptop', 999.99);  -- Real number inserted
INSERT INTO products (product_name, price) VALUES ('Smartphone', 'Five Hundred');  -- Text inserted

এটি SQLite এর Flexible Typing এর মাধ্যমে সম্ভব। price কলামে আপনি ভিন্ন ধরনের ডেটা রাখতে পারবেন, যদিও এটি INTEGER টাইপের জন্য তৈরি হয়েছে।


৪. Type Affinity এর প্রভাব

SQLite এর Type Affinity এর মাধ্যমে আপনি কলামের প্রাথমিক টাইপ ডিক্লেয়ার করে থাকলেও, আপনি ঐ কলামে যেকোনো ডেটা টাইপ ইনসার্ট করতে পারেন। উদাহরণস্বরূপ, INTEGER কলামে TEXT ডেটা রাখলে এটি স্টোর হবে, তবে সিস্টেম টাইপের অপারেশনগুলিতে কিছু বিভ্রান্তি হতে পারে, যেমন গণনা বা অর্ডারিংয়ে।

তবে, SQLite টাইপের ব্যাপারে নমনীয় হলেও, পূর্ণসংখ্যা (INTEGER) এবং টেক্সট (TEXT) এর মধ্যে কিছু পার্থক্য থাকতে পারে যখন আপনি SELECT বা অন্যান্য SQL অপারেশন করবেন।


৫. Flexible Typing এর সুবিধা

  • নমনীয়তা: SQLite ডাটাবেসে সন্নিবেশ বা আপডেট করার সময় টাইপ চেকিং খুব কম বা নেই, যা ডেভেলপারদের জন্য একটি নমনীয় ডাটাবেস ডিজাইন তৈরি করতে সহায়তা করে।
  • সরলতা: ছোট প্রকল্পগুলিতে বা মোবাইল অ্যাপ্লিকেশনগুলিতে ব্যবহার করা সহজ এবং দ্রুত।
  • ডাটা আপডেটের সুবিধা: আপনি সহজেই ডেটার টাইপ পরিবর্তন করতে পারেন যদি আপনি কোনো কলামে নতুন টাইপের ডেটা রাখতে চান।

সারাংশ

SQLite এর Flexible Typing বা Dynamic Typing এর মাধ্যমে ডাটাবেসে বিভিন্ন ধরনের ডেটা রাখার সুযোগ প্রদান করা হয়, এমনকি যখন কলামটি কোনো নির্দিষ্ট টাইপের জন্য তৈরি হয়। এটি SQLite-কে আরও নমনীয় এবং ব্যবহারকারী-বান্ধব করে তোলে, তবে টাইপ অমিলের কারণে কিছু সমস্যা হতে পারে, যেমন ডাটা যাচাই বা অপারেশনগুলিতে অপ্রত্যাশিত ফলাফল।

Content added By
Promotion

Are you sure to start over?

Loading...